####################################################
#      Примечание:                                 #
#      В мод добавлена настойка правил             #
# разрешения выдачи инвайтов определенной групе    #
####################################################
#  заменить файлы                                  #
#   invite.php                                     #
#   /admin/admin_invites.php                       #
#   /templates/admin/admin_invites.tpl             #
#   /templates/default/invite.tpl                  #
####################################################
#  Обновление и адаптпци я регистрации             #
####################################################

# 
#-----[ SQL QUERY ]---------------------------------
#
ALTER TABLE invite_rules ADD `user_group` INT(4) unsigned NOT NULL default 0;

# 
#-----[ ФАЙЛ ]---------------------------------
# 
templates/default/usercp_register.tpl

#
#-----[ НАЙТИ ]--------------------------------
#
<span id="check_pass"></span></td>
</tr>

#
#-----[ ПОСЛЕ, ВСТАВИТЬ ]----------------------
#
<!-- IF $bb_cfg['new_user_reg_only_by_invite'] -->
<!-- IF EDIT_PROFILE -->
<!-- ELSE -->
<tr>
	<td>Код инвайта: *<br /><small>Внимание!<br />На данный момент регистрация разрешена только по инвайтам.<br />Если вы не введете код инвайта, вы не сможете зарегистрироваться.</small></td>
	<td><input type="text" name="invite_code" size="35" value="{INVITE_CODE}" /></td>
</tr>
<!-- ENDIF -->
<!-- ENDIF -->

# 
#-----[ ФАЙЛ ]---------------------------------
# 
includes/ucp/usercp_register.php

#
#-----[ НАЙТИ ]--------------------------------
#
		// field => can_edit
		$profile_fields = array(
			'username'         => true,
			'user_password'    => true,
			'user_email'       => true,

#
#-----[ ПОСЛЕ, ВСТАВИТЬ ]----------------------
#
			'invite_code'      => true,

#
#-----[ НАЙТИ ]--------------------------------
#
		$pr_data = array(
			'user_id'          => ANONYMOUS,
			'username'         => '',
			'user_password'    => '',
			'user_email'       => '',

#
#-----[ ПОСЛЕ, ВСТАВИТЬ ]----------------------
#
			'invite_code'      => '',

#
#-----[ НАЙТИ ]--------------------------------
#
	/**
	*  Пароль (edit, reg)
	*/
	case 'user_password':

#
#-----[ ПЕРЕД, ВСТАВИТЬ ]----------------------
#

	/**
	*  Инвайт (edit, reg)
	*/
	case 'invite_code':
		$invite_code = !empty($_POST['invite_code']) ? clean_username($_POST['invite_code']) : $pr_data['invite_code'];
		if ($submit)
		{
			$err = validate_invite_code($invite_code);
			if (!$errors AND $err && $mode == 'register')
			{
				$errors[] = $err;
			}
			if($invite_code != $pr_data['invite_code'] || $mode == 'register')
			{
				$pr_data['invite_code'] = $invite_code;
			}
		}
		$tp_data['CAN_EDIT_INVITE_CODE'] = $can_edit;
		$tp_data['INVITE_CODE'] = $pr_data['invite_code'];
		break;
	

#
#-----[ НАЙТИ ]-------------------------------
#
		$sql_args = DB()->build_array('INSERT', $db_data);

		DB()->query("INSERT INTO ". BB_USERS . $sql_args);
#
#-----[ ПОСЛЕ, ВСТАВИТЬ ]---------------------
#
		$user_id = DB()->sql_nextid();
			if ($invite_code != '') {
				$sql = "UPDATE `invites` SET `active`='0', `new_user_id`=".$user_id.", `activation_date`=".time()." WHERE `invite_code`='".$invite_code."'";
				if (!($upd_querry = DB()->sql_query($sql))) message_die(GENERAL_ERROR, 'Ошибка при активации инвайта', '', __LINE__, __FILE__, $sql);
				DB()->sql_freeresult($upd_querry);
			}
# 
#-----[ ФАЙЛ ]---------------------------------
# 
includes/functions_validate.php

#
#-----[ НАЙТИ ]--------------------------------
#
// Check to see if email address is banned or already present in the DB

#
#-----[ ПЕРЕД, ВСТАВИТЬ ]----------------------
#
function validate_invite_code ($invite_code, $check_activ_and_taken = true)
{
	global $lang;

	$invite_code = str_compact($invite_code);
	$invite_code = clean_username($invite_code);
	if($invite_code != ''){
		if ($check_activ_and_taken)
		{
			$invite_code_sql = DB()->escape($invite_code);
			$sql = "SELECT `invite_id` FROM `invites` WHERE `invite_code` = '$invite_code_sql' AND `active` = '1'";
			if (!($result = DB()->sql_query($sql))){
			return message_die(GENERAL_ERROR, $lang['INVITE_ERROR_VALIDATE'], '', __LINE__, __FILE__, $sql);
			}else{
				$num_row = DB()->num_rows($result);
				DB()->sql_freeresult($result);
				if ($num_row == 0) {
					return $lang['I_C_TAKEN'];
				}
			}
		}
	}else{
	return $lang['I_C_EMPTY'];
	}
	return false;
}
# 
#-----[ ФАЙЛ ]---------------------------------
# 
language/lang_russian/lang_main.php

#
#-----[ В КОНЕЦ ФАЙЛА, ВСТАВИТЬ ]--------------
#
//Invites
$lang['INVITE_ERROR_VALIDATE'] ='Ошибка при проверке кода инвайта';
$lang['INVITES'] = 'Панель управления инвайтами';
$lang['I_C_TAKEN'] = 'Такого кода инвайта не существует или он уже активирован';
$lang['I_C_EMPTY'] = 'Вы не указали код инвайта';

#
#-----[EoM]------------------------------------
#